return {
  {
    "nvim-tree/nvim-web-devicons", -- icon
  },
  {
    "nvim-lua/plenary.nvim", -- lua functions that many plugins use
  },
  {
    "alexghergh/nvim-tmux-navigation", -- tmux & split window navigation
    enabled = true,
    event = "VeryLazy",
    config = function()
      local nvim_tmux_nav = require "nvim-tmux-navigation"

      nvim_tmux_nav.setup {
        disable_when_zoomed = true, -- defaults to false
        keybindings = {
          left = "<C-h>",
          down = "<C-j>",
          up = "<C-k>",
          right = "<C-l>",
          last_active = "<C-\\>",
          next = "<C-Space>",
        },
      }
      --[[
        Ctrl + h: move left
        Ctrl + j: move down
        Ctrl + k: move up
        Ctrl + l: move right
        Ctrl + \: move to the last (previously active) pane
        Ctrl + Space move to the next pane (by pane number)
      ]]

      -- vim.keymap.set("n", "<A-h>", nvim_tmux_nav.NvimTmuxNavigateLeft)
      -- vim.keymap.set("n", "<A-j>", nvim_tmux_nav.NvimTmuxNavigateDown)
      -- vim.keymap.set("n", "<A-k>", nvim_tmux_nav.NvimTmuxNavigateUp)
      -- vim.keymap.set("n", "<A-l>", nvim_tmux_nav.NvimTmuxNavigateRight)
      -- vim.keymap.set("n", "<A-\\>", nvim_tmux_nav.NvimTmuxNavigateLastActive)
      -- vim.keymap.set("n", "<A-Space>", nvim_tmux_nav.NvimTmuxNavigateNext)
    end,
  },
  {
    "szw/vim-maximizer",
    enabled = true,
    keys = {
      { "<leader>sm", "<cmd>MaximizerToggle<CR>", desc = "Maximize/minimize a split" },
    },
  },
  {
    -- 中英文自定切换处理
    "keaising/im-select.nvim",
    config = function()
      vim.g.im_select_im_name = {
        normal = "en",
        insert = "zh-CN",
      }
      require("im_select").setup({})

      -- https://www.bilibili.com/video/BV1Fr3CzeELA
    end,
  },
}
